﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;

//using Microsoft.VisualStudio.TestTools.UnitTesting;

//namespace Pibby.Core.Ioc.Tests
//{
//    [TestClass]
//    public class TypeExtensionTests
//    {
//        public class NonCreatableClass
//        {
//            private NonCreatableClass()
//            {
//            }
//        }

//        public class CreatableClass
//        {
//            public CreatableClass()
//            {
//            }
//        }

//        public abstract class AbstractClass { }

//        public interface InterfaceClass { }

//        [TestMethod]
//        public void TypeExtensions_HasPublicConstructor_NonPublic_Fails()
//        { 
//            Type nonCreatable = typeof(NonCreatableClass);

//            Assert.IsFalse(nonCreatable.HasPublicConstructor());
//        }

//        [TestMethod]
//        public void TypeExtensions_HasPublicConstructor_Public_Succeeds()
//        {
//            Type creatable = typeof(CreatableClass);

//            Assert.IsTrue(creatable.HasPublicConstructor());
//        }

//        [TestMethod]
//        public void TypeExtensions_IsConcreteType_Interface_Fails()
//        {
//            Type interf = typeof(InterfaceClass);

//            Assert.IsFalse(interf.IsConcreteType());
//        }

//        [TestMethod]
//        public void TypeExtensions_IsConcreteType_Abstract_Fails()
//        {
//            Type abst = typeof(AbstractClass);

//            Assert.IsFalse(abst.IsConcreteType());
//        }

//        [TestMethod]
//        public void TypeExtensions_IsConcreteType_Concrete_Succeeds()
//        {
//            Type create = typeof(CreatableClass);

//            Assert.IsTrue(create.IsConcreteType());
//        }

//    }
//}
